package com.qin.service.impl;

import com.qin.dao.MenuMapper;
import com.qin.entity.Menu;
import com.qin.service.MenuService;
import com.qin.vo.MenuVo;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;

@Service
@Transactional
public class MenuServiceImpl implements MenuService {

    @Resource
    private MenuMapper menuMapper;

    /**
     * 查询所有菜单列表
     * @return
     */
    public List<Menu> findMenuList() {
        return menuMapper.findMenuList();
    }

    /**
     * 根据角色ID查询该角色拥有的菜单ID集合
     * @param roleId
     * @return
     */
    public List<Integer> findMenuIdListByRoleId(int roleId) {
        return menuMapper.findMenuIdListByRoleId(roleId);
    }

    /**
     * 根据菜单编号查询菜单信息
     * @param currentRoleMenuIds
     * @return
     */
    public List<Menu> findMenuByMenuId(List<Integer> currentRoleMenuIds) {
        return menuMapper.findMenuByMenuId(currentRoleMenuIds);
    }

    /**
     * 查询菜单列表
     * @param menuVo
     * @return
     */
    public List<Menu> findMenuListByPage(MenuVo menuVo) {
        return menuMapper.findMenuListByPage(menuVo);
    }

    /**
     * 添加菜单
     * @param menu
     * @return
     */
    public int addMenu(Menu menu) {
        // 如果没有选择父级菜单,默认设置父级菜单为 0
        if(menu.getPid()==null){
            menu.setPid(0);
        }

        menu.setTarget("_self");        // 设置打开方式
        return menuMapper.addMenu(menu);
    }

    /**
     * 修改菜单
     * @param menu
     * @return
     */
    public int updateMenu(Menu menu) {
        return menuMapper.updateMenu(menu);
    }

    /**
     * 删除菜单
     * @param id
     * @return
     */
    public int deleteById(int id) {
        return menuMapper.deleteById(id);
    }

    /**
     * 根据菜单ID查询该菜单是否有子菜单
     * @param id
     * @return
     */
    public int getMenuCountByMenuId(Integer id) {
        return menuMapper.getMenuCountByMenuId(id);

    }

    /**
     * 根据当前登录员工的角色查询菜单列表
     * @param employeeId
     * @return
     */
    public List<Menu> findMenuListByEmployeeId(Integer employeeId) {
        return menuMapper.findMenuListByEmployeeId(employeeId);
    }


}

















